The present invention generally relates to the field of automotive controls. More particularly, the present invention relates to a system for readily modifying and improving the functionality and programming of an automobile""s original engine control unit (hereinafter referred to as xe2x80x9cECUxe2x80x9d).
In modern automobiles the engine is controlled by an onboard computer, which is commonly referred to as the engine control unit or ECU. The ECU monitors a multitude of parameters and continuously makes corrections to various control points to achieve a desired performance profile. Some typical profiles include maximization of fuel efficiency, maximization of engine power, or minimization of emissions output. These profiles are typically stored within the ECU""s non-volatile memory as part of the engine control system software.
In many circumstances, automobile owners modify their automobile in order to improve the performance thereof. However, in order to take full advantage of such modifications, the ECU may also need to be modified, i.e., reprogrammed. Unfortunately, current xe2x80x9cstockxe2x80x9d ECUs (i.e., ECUs for use in an unmodified car) are not readily reprogrammed or upgraded. Therefore, it would be desirable to have an easy, rapid, and cost effective means to reprogram or upgrade the ECU""s software in order to take full advantage of the modifications.
One present means to upgrade a stock ECU is to replace the ECU""s onboard non-volatile memory with either a socket/flash memory chip or an entire flash memory module that plugs in to a socket installed in the automobile. However, both of these approaches may cause problems that can potentially disable the automobile. For example, contact reliability problems can arise. Over time, dirt or oxidation can build up on the contacts eventually resulting in a partial disconnect between the ECU and the chip or the module. If such a partial disconnect does occur, then the ECU likely is unable to read the flash memory. Additionally, the replaceable module may completely disconnect from the socket. This problem is exacerbated in the automotive environment due to the substantial vibration to which the module is subjected.
A second means to upgrade a stock ECU is to reprogram the ECU using the manufacturer""s memory reprogramming protocol. However, in practice this is not feasible because the reprogramming protocol is proprietary. In addition, this means is not cost effective since the equipment necessary to perform the reprogramming is extremely costly. Finally, even with the equipment, it is unclear whether one can arbitrarily change the code being loaded into the ECU.
Still another approach to xe2x80x9cupgradingxe2x80x9d an ECU is to allow switching being two or more ECU programs without removing the ECU. A switch is installed on the dashboard and is wired back through the engine compartment into the ECU box onto a flash memory upgrade module. This switch allows a user to physically switch between the memory associated with the stock ECU and the new memory upgrade module, thereby switching the data memory lookups used by the ECU to control the engine operating characteristics. In this configuration, a user can switch between the normal performance program and, for example, a racing program simply with the flip of a dashboard mounted switch. This solution, however, also suffers from drawbacks. Specifically, this approach requires that physical modifications and rewiring be done to the automobile. Accordingly, this approach is neither quick nor inexpensive.
In addition to concerns with the ease and cost effectiveness of reprogramming or upgrading an ECU, the automotive after-market performance upgrade industry is concerned with the security of their upgraded code. If competitors can easily obtain the system software, they require less engineering design effort to produce a similar performance profile and thus may be able to sell their product at a lower price. Therefore, in conjunction with upgrading or reprogramming an ECU, it is desirable to provide a mechanism for minimizing the risk that a competitor will have the ability to copy the upgraded software.
The current industry practice for software protection is to modify the address and data lines going to the ECU memory using what is called an xe2x80x9cencryption socketxe2x80x9d. An encryption socket scrambles the order of the address and data lines simply by changing the circuit board connections on the memory upgrade circuit that is installed on the ECU. Furthermore, selected address lines are passed through a PAL or GAL type programmable logic device to implement what is effectively a lookup table or similar logic function that provides a one to one mapping of the input ECU address to the output memory address. This prevents one from directly reading out the flash memory chip to recover the unscrambled software since a programmer will not read out the data in the correct address order nor will the programmer unscramble the data bits.
However, this practice suffers from several problems. First, the encryption can be readily circumvented. Specifically, the flash memory along with its associated descrambling circuitry may be inserted into a programmer and the memory as seen by the ECU is read out directly since during the programmer read out process the descrambling circuitry is active and presents the programmer with correct descrambled data. More particularly, since the ECU must necessarily access descrambled data and since the ECU and the programmer utilize the same bus and control signals, the data presented to either the ECU or the programmer necessarily will be descrambled or unencrypted.
Second, the address and data line scrambling sequence can be determined via direct inspection of the circuit board. In turn, the function of the programmable logic can be deduced or characterized simply by feeding address test patterns into the device and monitoring the resulting memory address output. Since the most complex device currently on the market scrambles 8 address lines, only 256 tests would be required to characterize fully the operation of the programmable logic device. With these two pieces of information (i.e., the scrambling sequence and the characterization), the original unscrambled ECU program and data can be reconstructed.
Accordingly, it would be advantageous to have a quick and cost-effective solution for reprogramming a stock ECU in order to take full advantage of after-market improvements or modifications. It would also be advantageous to be able to protect the software accessed by the ECU from simply being read-out by a programmer, thereby minimizing the risk that a competitor can quickly and economically create a competing product.
In accordance with one aspect of the present invention, a memory system is provided for limiting access to a protected portion of a memory to a predetermined accessing device. The memory system includes a memory having a protected portion. The system further includes a control unit in communicative relation with an accessing device and the memory, wherein the control unit monitors the accessing device""s pattern of access to the memory in order to determine if the accessing device is the predetermined accessing device and permits only the predetermined accessing device to access the protected portion of the memory.
In accordance with another aspect of the present invention, the memory system also includes a data multiplexer in communicative relation with the control unit and the accessing device, along with an address translator in communicative relation with the accessing device and the memory.
In accordance with still another aspect of the present invention, the control unit monitors either the accessing device""s reads of the memory or the accessing device""s writes to the memory.
In accordance with a further aspect of the present invention, the system includes a memory, which is encrypted. In conjunction therewith, the system includes a memory decryptor in communicative relation with the address translator, the data multiplexer, and the encrypted memory.
In accordance with still a further aspect of the present invention, an enhanced module chipping system is provided. The chipping system includes a memory and a control unit in communicative relation with the memory. The chipping system further includes an interface port in communicative relation with the control unit and the memory, wherein the interface port is configured for connection to a programming device for reprogramming either the memory or the control unit.
In accordance with still another aspect of the present invention, a method of modifying performance characteristics of an automobile is provided. The method includes modifying data stored in a memory of an engine control system and reprogramming an existing subsystem of the automobile that is in communicative relation with the engine control system. The method further includes using the existing subsystem to enable the engine control system to access the modified data.